package com.mall.b2c.service;

import java.util.Date;
import java.util.List;

import com.mall.b2c.bean.GoodsBean;
import com.mall.b2c.domain.goods.GoodsDomain;
import com.mall.common.bean.Message;
import com.mall.common.bean.Order;
import com.mall.common.bean.Pager;
import com.mall.common.bean.SearchFilter;
import com.mall.common.service.BaseService;


/**
 * Service接口 - 商品
 */
public interface GoodsService extends BaseService<GoodsDomain, Long>  {
	/**
	 * 通过指定条件查找商品列表
	 * @author lzx
	 */
	List<GoodsDomain> findList(Long[] excludeIds, Long goodsCategoryId, String goodsCategoryCode, 
			Long brandId, Long tagId, String manufacturer, Boolean isMarketable, Integer count, boolean hasStock, Long storeId, String orderBy);
	
	/**
	 * 保存商品
	 * @author wangzx
	 * @param
	 * @return
	 */
	Message saveGoods(GoodsDomain goods, Long[] tagIds);

	/**
	 * 修改商品
	 * @author wangzx
	 * @param 
	 * @return
	 */
	Message updateGoods(GoodsDomain goods, Long[] tagIds);
	
	/**
	 * 修改商品图片
	 * @param goods
	 * @return
	 */
	Message updatePic(GoodsDomain goods);
	
	/**
	 * 通过指定条件查找商品分页数据
	 * @author lzx
	 */
	Pager findPager(Long[] goodsCategoryIds, String[] goodsCategoryCode, Long brandId,
					Long[] tagIds, Long[] providerIds, Boolean isMarketable, Long storeId, List<SearchFilter> filterList,
					List<Order> orderList, Pager pager);
	
	/**
	 * @author wangzx
	 * @param propertyName
	 * @param values
	 * @return
	 */
	List<GoodsDomain> getGoodsList(String propertyName, Object[] values);
	
	/**
	 * 商品静态化
	 * @param categoryCode
	 * @param beginDate
	 * @param endDate
	 * @param first
	 * @param maxResults
	 * @return
	 */
	List<GoodsDomain> findList(String categoryCode,
							   Date beginDate, Date endDate, Integer first, Integer maxResults);
	
	/**
	 * 搜索下拉提示
	 * @param keyword
	 * @return
	 */
	List<GoodsDomain> tip(String keyword);
	
	
	/**
	 * 获取浏览历史信息
	 * @param idsStr
	 * @return
	 */
	List<GoodsBean> getHistoryGoods( String idsStr);

	/**
	 * 上架
	 * @param ids
	 */
	void upMarket(Long[] ids);
	
	/**
	 * 下架
	 * @param ids
	 */
	void downMarket(Long[] ids);
}


